/*
 * Caballo.java
 *
 * Created on 14 de julio de 2007, 09:23 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package ajedrezLogica;
import java.util.*;
import javax.swing.*;
/**
 *
 * @author Billy
 */
public class Caballo extends Pieza{
    
    /** Creates a new instance of Caballo */    
    public Caballo(String nombre, String posicion, JLabel laFigura) {        
        super(nombre, posicion, laFigura);
        System.out.println("::Estoy sobre el caballo!!!:: ");     
    }

    public Caballo(){
        super("","",null);
    }
    
    public List<String> CalcularMovimientos(manejadorPiezas adminPiezas){
        char f , c;
        movimientosposibles = new ArrayList<String>();                                     
        
        for(int i=1; i<=8;i++){            
            f = posicion.charAt(0);        
            c = posicion.charAt(1);

            switch(i){
                case 1: /*Posicion 1*/ 
                        --f; --f;                        
                        if( f <'a') break;
                        ++c;  
                        if( c > '8') break;
                        if(adminPiezas.HayPiezaenCasilla(aString(f,c))== true) 
                                agregarListaxComer(adminPiezas,f,c);  
                        
                        else movimientosposibles.add(aString(f,c));                                    
                        break;
                        
                case 2: /*Posicion 2*/ 
                        --f; 
                        if( f < 'a') break;                        
                        ++c; ++c;        
                        if( c > '8') break;
                        if(adminPiezas.HayPiezaenCasilla(aString(f,c))== true) {
                            agregarListaxComer(adminPiezas,f,c);                                      
                        }
                        else movimientosposibles.add(aString(f,c));                                                          
                        break;
                        
                case 3: /*Posicion 3*/ 
                        ++f; 
                        if( f > 'h')break;
                        ++c; ++c;      
                        if( c > '8')break;
                        if(adminPiezas.HayPiezaenCasilla(aString(f,c))== true) {
                                agregarListaxComer(adminPiezas,f,c);                                   
                        }
                        else movimientosposibles.add(aString(f,c));                                                                                    
                        break;
                        
                case 4: /*Posicion 4*/ 
                        ++f; ++f;
                        if( f > 'h')break;                        
                        ++c;         
                        if( c > '8')break;                        
                        if(adminPiezas.HayPiezaenCasilla(aString(f,c))== true) {
                                agregarListaxComer(adminPiezas,f,c);                          
                        }
                        else movimientosposibles.add(aString(f,c));                                                                                                             
                        break;
                        
                case 5: /*Posicion 5*/ 
                        ++f; ++f;
                        if( f > 'h')break;                        
                        --c;         
                        if( c < '1')break;                        
                        if(adminPiezas.HayPiezaenCasilla(aString(f,c))== true) {
                            agregarListaxComer(adminPiezas,f,c);                                      
                        }
                        else movimientosposibles.add(aString(f,c));  
                        break;
                        
                case 6: /*Posicion 6*/ 
                        ++f;
                        if( f > 'h')break;                        
                        --c;--c;         
                        if( c < '1')break;                        
                        if(adminPiezas.HayPiezaenCasilla(aString(f,c))== true) {
                                agregarListaxComer(adminPiezas,f,c);                                      
                        }
                        else movimientosposibles.add(aString(f,c));                                                                                                                                                              
                        break;
                        
                case 7: /*Posicion 7*/ 
                        --f;
                        if( f < 'a')break;                        
                        --c; --c; 
                        if( c < '1')break;                                                
                        if(adminPiezas.HayPiezaenCasilla(aString(f,c))== true) {
                            agregarListaxComer(adminPiezas,f,c);                                    
                        }
                        else movimientosposibles.add(aString(f,c));                                                                                                                                                          
                        break;
                        
                case 8: /*Posicion 8*/ 
                        --f; --f;
                        if( f < 'a')break;                                                
                        --c;      
                        if( c < '1')break;                        
                        if(adminPiezas.HayPiezaenCasilla(aString(f,c))== true) {
                            agregarListaxComer(adminPiezas,f,c);                                   
                        }
                        else movimientosposibles.add(aString(f,c));                                                                                                                                                                                    
                        break;                        
            }                        
        }
       return movimientosposibles;          
    }

}
